import com.google.zxing.*;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import util.BarcodeUtils;
import util.QRcodeUtils;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        /**
         * 定义了实例程序要生成的二维码、条形码的数据、存放路径。
         * 特别地，hashMap 存放的是一组值，确定生成图片的行为。
         * 其中 EncodeHintType 是一组提示用来制定写入器的行为。
         * 这里设置的 ERROR_CORRECTION 就是指要使用的纠错等级。
         * 值处设置的 ErrorCorrectionLevel 就是指定就错等级的
         * 枚举，其中 L 代表 7% 的纠错等级。
         * */
        String data = "http://www.lichenxidian.com";
        String barCodePath = "/Users/lichen/Desktop/barcode.png";
        String qrCodePath = "/Users/lichen/Desktop/qrcode.png";
        String charset = "UTF-8";
        Map<EncodeHintType, ErrorCorrectionLevel> hashMap = new HashMap<>();
        hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        BarcodeUtils barcodeUtils = new BarcodeUtils(data, barCodePath, charset, hashMap);
        QRcodeUtils qrCodeUtils = new QRcodeUtils(data, qrCodePath, charset, hashMap);

        // 分别测试条形码和二维码的生成和读取
        try {
            barcodeUtils.makeBarcode(200, 500);
            System.out.println("成功生成条形码，存储在：" + barCodePath);

            qrCodeUtils.makeQRcode(500, 500);
            System.out.println("成功生成二维码，存储在：" + qrCodePath);

            String barResult = BarcodeUtils.readBarcode(barCodePath);
            System.out.println("读取位于 " + barCodePath + " 的条形码，结果为 " + barResult);

            String qrResult = QRcodeUtils.readQRcode(qrCodePath);
            System.out.println("读取位于 " + qrCodePath + " 的条形码，结果为 " + qrResult);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
